Date: Tue, 10 Dec 1996 17:53:08 GMT
Server: NCSA/1.4.2
Content-type: text/html

<html>
<head><title>PDB REFERENCE MANUAL</title></head>
<!-- Changed by: Cody Chung Tin Kwok, 21-Sep-1995 -->
<body>

<center><h1>PDB REFERENCE MANUAL</h1><p>
Version 4.0<br>
HTML version by David Christianson and Chung Kwok<p>
</center>
<p>
<hr>
<p>   
<h5>   
&copy 1990-1995 Copyright &copy University of Washington<br>
Originally written by Tony Barrett. <br>
Version (3.0) by David Christianson<br>
Version (4.0) by Chung Kwok
<p>
This research was funded in part by Office of Naval Research Grants
90-J-1904s and N00014-94-1-0060, by National Science Foundation Grants
IRI-8957302 and IRI-9303461 and by a donation from Apple Computer.
<p>

All rights reserved. Use of this software is permitted for non-commercial
research purposes, and it may be copied only for that use.  All copies must
include this copyright message.  This software is made available AS IS, and
neither the authors nor the University of Washington make any warranty about
the software or its performance.
<p>
When you first acquire this software please send mail to
bug-ucpop@cs.washington.edu; the same address should be used for problems."
</h5>
<hr>   
This document is best viewed with an HTML browser that supports tables.
<hr>
<p>
<h2>Table of Contents</h2>
<ol>
<li><a href="#Intro">Introduction</a>
<li><a href="#Runni">Running PDB</a>
<li><a href="#Layou">General window layouts</a>
<li><a href="#Shell">Planning system overview</a>
<li><a href="#VCRdi">Graphic plan space display</a>
<li><a href="#PlanD">Individual plan display</a>
<li><a href="#Brows">PDB browsers</a>
<li><a href="#Examp">A simple example</a>
<li><a href="#Custo">Customizations and options</a>
<li><a href="#KBugs">Known bugs</a>
<li><a href="#Portg">Porting PDB</a>
</ol>
<hr>
<h2><a name="Intro">Introduction</a></h2><p>

The primary function of PDB is to allow the user to schedule planning problems
to be run by the planner, record the actions taken by the planner, and then
reconstruct that information in a meaningful way. Since UCPOP does extensive
search in plan-space, PDB focuses on recording and presenting plan-space search
trees generated by the planner.
<p>
PDB is an interactive application which makes the UCPOP planning process more
accessible to the user by the use of graphical interfaces to the planning
process. It is intended to be used in several ways:

<ul>
<li>Domain Construction
<li>Search Control Development
<li>Planner Modification
</ul>
<p>
PDB exists because of the difficulty involved in performing planner research
without adequate visualization tools. In the case of UCPOP, users who
were trying to use the planner as well as programmers trying to improve 
and debug the system were having to wade through extensive trace information
generated by the planner. PDB evolved as a way of presenting this information
in a graphical format in order to make these tasks easier.
<p>
<hr>
<h2><a name="Runni">Running PDB</a></h2><p>
Recording Plans From The Lisp Listener
       
To start PDB,  just run <tt>(pdb-setup)</tt> in the UCPOP package.
To start recording planning sessions,  use PDB-RECORD:<p>
<tt>(pdb-record &key (record-firings nil))</tt>
<p>
Then invoke the UCPOP planner. To stop recording, use PDB-STOP:
<p>
<tt>(pdb-stop)</tt>
<p>

If you use the <tt>def-search</tt>procedure to wrap around 
search functions,  all planning sessions will be recorded when
even the Recording toggle button 
in the shell.  You can turn off the recording by clicking on the 
Recording toggle button in the shell
(please refer to the <a href="#Shell">Shell window</a>).
<p>

       
<hr>
<p>
<!---------------------------------------------------------------------->

<h2><a name="Layou">General window layout</a></h2><p>

<h4>Menu and Menubar</h4>
<img src="images/menubar.gif"><br>

All windows has a menubar.  On all menubars there is a menu labelled
"Windows".  The menu has the following items:

<table border=3>
<tr>
<td rowspan=5>Windows</td>
   <th> Refresh</th><td> Redisplays the window contents.</tr>
   <tr><th> Find</th><td> Displays a list of active subwindows.
                 Selecting a window will bring it to the front of the
                 screen.</tr>
   <tr><th> Remove all</th><td> Closes all active subwindows.</tr>
   <tr><th> Quit</th><td> Close this window.</tr>
<tr>
</table>
Note: the "Remove all" item is only available in the shell window.

<h4>Commands</h4>

You can click on buttons or objects on the screen highlighted by
boxes.  The effects will be discussed in subsequent sections.

<hr>

<!---------------------------------------------------------------------->


<h2><a name="Shell">Planning system overview</a></h2><p>
<h4>The Shell Window</h4>

<p>       
<center><img src="images/shell.gif"></center>
<p>       

The first window opened by PDB is the Plan System Overview Window.
The right hand side of this window maintains a list of recorded planning 
sessions while the left hand side displays the state of the planner.

<h4>Specifying a Problem</h4>
<img align=left border=3 src="images/new-session-labeled.gif">

In order to start a new planning session, select <tt>New Session</tt> from
the <tt>Debugger</tt> menu.  You will then be asked to specify the problem 
you want to solve and the search method to use via a dialog box. On
the top left of the dialog box is a list of domains. Next to it is a
list of problems. When the item ``Any'' is selected from the domain
list, all problems are listed: otherwise this list only contains
problems from the currently selected domain. Once a problem is
selected, a complete description of the problem is presented in the
area below the domain and problem lists.
<br clear=left>
<p>
<h4>Setting the Search Control Options</h4>

The controls beneath the problem description allow you to specify
various search control options. The first button selects the type of
search to use. When it is pushed in, the planner uses search control
rules to guide search. When it is pushed out, the planner uses a
specific search function. In the latter case, the user must use the
box below this button to specify the search function to be used,
whereas in the former case you will use this box to specify a search
controller.  The other controls allow you to specify whether or not to
record the planning session, whether or not to record search control
rule firings(this slows down planning considerably), as well as the
maximum number of nodes to search.
<p>
<h4>Viewing the Results of Planning</h4>

<img align=right border=3 src="images/planning-result-labeled.gif">

Once you've specified the planning options and clicked the <tt>Plan</tt>
button, PDB calls UCPOP to begin planning. The Plan System
Overview Window displays a progress report on planning and returns the
results of planning when done.  These
results include a short description of the last plan searched, which
will be the solution if the planner was successful.  PDB prints
plans in the following manner: the initial state is printed first,
then the steps in order to the goal state. Only the preconditions of
the steps are displayed. Each precondition has a number to its left
representing the step which supports that precondition. If the plan is
not complete, any unsupported preconditions appear with question marks
instead of numbers on the left,
 while threats are identified by the step number of the threatening
step, shown to the right of the threatened condition.
<p>
<h4>Menu Commands</h4>
<table border=3>

<tr>
<td>Windows</td><td colspan=2>Please refer to 
	<a href="#Layou">General window layout</a></td>
<tr>
<td rowspan=5> Debug</td>
   <th> New Session</th><td> Execute a new planning problem. This brings
                 up a dialog window containing the following options:
      <table border=1>	
      <tr><th>Domain</th><td> Domain to take problems from.
      <tr><th>Problem</th><td> Problem to execute.
      <tr><th>Search Limit</th><td> Number of nodes to search before
                      stopping.
      <tr><th>Search Control</th><td> Yes or no. If yes, you must specify
                      a controller. If no, you must specify a search
                      function.
      <tr><th>Record Debugging</th><td> Yes if you want to record this as
                      a session.
      <tr><th>Record Firings</th><td> Yes is you want to record all
                      search control rule firings(slow).
      </table>
   <tr><th> New Browser</th><td> Browse domains, problems, and search
                 control.
   <tr><th> Open Session</th><td> Open a VCR window on a session.
   <tr><th> Delete Session</th><td> Delete a session so that it will no longer
                 appear in the window.
   <tr><th> Clear Session</th><td> Delete all sessions. All sessions will be
                 lost.</td></tr>
<tr>
<td rowspan=2>Options</td>
   <th> Reset Options</th><td> Reads back the defaults saved in
                 .plandebugrc</td></tr>
   <tr><th> Save Options</th><td> Writes defaults out to .plandebugrc
   </table>   
</table>
<tr><th><h4>Plan System Overview Commands</h4>
<img src="images/shell-buttons.gif">
The Sessions window (right) shows the sessions recorded by the system.
The PlannerStatus window (left) shows various information about the session selected.  

<table border=3>       
	<tr><th> Info</th><td> Display the result of the current session.</tr>
	<tr><th> VCR</th><td> Display a trace of the current session.</tr>
	<tr><th> Remove</th><td> Remove the current session.</tr>
	<tr><th> Recording</th><td> Toggle plan recording on/off.</tr>
</table>   

<tr><th><h4>Mouse Commands</h4>
<table border=3>

       
<tr><th> Sessions
<table border=3>
   <tr><th> L</th><td> Find Window Clicking the left mouse button on a
                 session will select that session.
</table>   
</table>
<hr>
<!---------------------------------------------------------------------->      


<h2><a name="VCRdi">Graphic plan space display</a></h2><p>
<h4>The VCR Window</h4>
<p>
<center><img src="images/vcr.gif"></center>
<p>
VCR Windows provide the user with a graphical depiction of the search
space explored by the planner during a given planning session. Once
the user has seleted a session in the Plan System Overview Window,
they can create a VCR Window for that session either by selecting
<tt>New VCR Window</tt> from the <tt>Debug</tt> menu, or by pressing
the <tt>VCR</tt> button in the window itself.  <p>

<center><img src="images/tree.gif"><br clear=left>
Anatomy of the Search Tree</center>
<br>
Most of the VCR Window is taken up by a graphical depiction of the
planning trace in the form of a tree
 (we will refer to this as either the planning tree or the search
tree). Each node in the tree is a partial plan; the root node plan
contains only the start and goal states, while each subsequent
generation represents one application of the UCPOP algorithm. The
children of a given node represent individual solutions or <em>
refinements</em> generated in the support or protection of a
precondition. The type of refinement is printed beneath each
node. Accordingly, each branch of the tree is associated with an
unsupported or threatened precondition(known as a <em>flaw</em>),
which is denoted by a label printed along the branch.  Figure
\ref{tree} gives a breakdown of these conventions.
<p>


The tree is formatted so that the left hand side of the tree leads to
the last node encountered by the planner. If the solution was found,
this will be the solution path. Note that the formatting algorithm
puts nodes near the root of the tree farther apart than nodes at the
leaves, so that sometimes you will have trouble using the VCR Window
to view all the children of some nodes. You can solve some of these
problems by changing or restricting the display of various nodes in
the tree via the <tt>Tree</tt> and <tt>Options</tt> menus.
<p>
<img align=left src="images/nodes1.gif">
The label 
below nodes refers to the reason for which the plan is made.  For example
in the figure above "S:PUTON" means a new step "PUTON" is added, 
"L:0" means a new link to step 0 is added,  and finally
"3<1" means an ordering constraint (from promotion or demotion) is added.
<p>

The <em>red</em> node is the currently selected node.  You can press the
left or middle button.
<p>
   <table border=3>
   <tr><th> L</th><td> Select Node: Centers the cursor over this node. If
                 the cursor is already at this node, PDB will open a plan
                 window on that node.
   <tr><th> M</th><td> Describe object: If Composer is running, PDB will
     open a Composer window on the partial plan associated
                 with this node.
   </table>
<p>
The <em>green</em> is a visited node.  A node (plan) is visited if the plan
refined it during planning.<p>
The <em>white</em> node is an unvisited node.  
The planner has not refined the plan during planning.
<p>
The word "CLEAR" above the horizontal line represents the open condition
being resolved by the different siblings plans connected by the line.

<p>
<h4>Menu Commands</h4>
       

<table border=3>
<tr>
<td>Windows</td><td colspan=2>Please refer to 
	<a href="#Layou">General window layout</a></td>
<tr>
<td rowspan=10>Tree</td>
   <th> Print</th><td> Print the current window. Asks for filename via
                 dialog.
   <tr><th> All Nodes</th><td> Display all nodes in the tree.
   <tr><th> Steps Only</th><td> Display nodes for plans with newly added
                 steps.
   <tr><th> Searched Only</th><td> Display only those nodes that have been
                 searched.
   <tr><th> Solution Only</th><td> Display solution node only (if found).
   <tr><th> Solution Path Only</th><td> Display nodes on solution path (if
                 found).
   <tr><th> Expand Node</th><td> Display the children of the current plan.
   <tr><th> Contract Node</th><td> Do not display the children of the
                 current plan.
   <tr><th> Expand Branch</th><td> Display the branch rooted at the current
                 plan.
   <tr><th> Contract Branch</th><td> Do not display the branch rooted at the
                 current plan.</td></tr>
<tr>
<td rowspan=4> Options</td>
   <th> View</th><td> Change the node picture of the tree nodes to one
     of the following
      <table border=1>
      <tr><th>Order</th><td> Color the nodes from dark to light green
                      depending on visitation order.
      <tr><th>Rank</th><td> Color the nodes from dark to light green
                      depending on the absolute rank.
      </table></td></tr>
   <tr><th>Labels</th><td> Label the node branches with conditions branched on:
      <table border=1>
      <tr><th>all: Label all branches.
      <tr><th>multiple: Label only branches with multiple
                      children.
      <tr><th>none: Don't label.
      </table></td></tr>
   <tr><th>Resize</th><td> Shrink or enlarge the displayed search tree by a
                 constant factor.</td></tr>
</table>
<tr><th><h4>VCR traversal buttons</h4>
<image src="images/vcr-buttons.gif"><br>
These buttons are for navigating through the plan space  and visualizing
the planning process.
<p>
<table border=3>
<tr><th> 	<td><image src="images/vcr-button1.gif"></td>
	<td>Backup the VCR until stop button is pressed.</td>
</tr>
<tr><th>
	<td><image src="images/vcr-button2.gif"></td>
	<td>Backup the VCR to the plan visited just prior to the current
            one.</td>
</tr>
<tr><th>
	<td><image src="images/vcr-button3.gif"></td>
	<td>Stops the VCR traversal animations.</td>
</tr>
<tr><th>
	<td><image src="images/vcr-button4.gif"></td>
        <td>Progress the VCR to the next visited plan.</td>
</tr>
<tr><th>
	<td><image src="images/vcr-button5.gif"></td>
        <td>Progress the VCR until a mouse button is pressed. </td>
</tr>
</table>   
<p>       
<tr><th><h4>Mouse Commands</h4>
<table border=3>

       
<tr><th> Plan Tree Nodes
<tr><th> Plan Window Markers
   <table border=3>
   <tr><th> L: Select Window: Moves the window to another node. This
                 is done by clicking once on the marker to move and once
	     on the node to move to.
   </table>   
</table>
<hr>

<!---------------------------------------------------------------------->

<h2><a name="PlanD">Individual plan display</a></h2><p>

<p>       
<img align=left src="images/plan.gif">
<p>       
<h3>The Plan Window</h3>
Clicking on a selected node produces a Plan Window,
which provides a more detailed view of the plan associated with that
node.  The upper part of this window shows the parent, siblings, and
children of the current node, while the lower part describes the plan
at that node. The plan can be viewed in one of two ways: in textual
format the plan is printed in the same way that the results of
planning are returned by UCPOP, while in graphic format the steps
are drawn in a partial order from left to right, with lines
representing links connecting effects with preconditions.
<br clear=left>

<h4>Navigating the Plan Window</h4>

The small tree at the top of the Plan Window represents the immediate
``family'' of the current node: its parent,
siblings, and children. It also allows you to navigate the planning tree
simply by selecting any of these nodes: the Plan Window will
immediately update itself using the node you selected as the new 
current node.

<h4>Moving the Plan Window from the VCR</h4>

Whenever a Plan Window is opened, a unique ID number is assigned to it and 
drawn
next to the node in the VCR Window at which it is pointing. You can move the
Plan Window to point at a different node just by selecting this number once and
then selecting the new node.

<h4>Menu Commands</h4>
<table border=3>       
<td>Windows</td><td colspan=2>Please refer to 
	<a href="#Layou">General window layout</a></td>
<tr><td rowspan=6> Plan</td>
      <th> Refine</th><td> Refine the current plan. Brings up a dialog with
                 search options.
      <tr><th>Search Limit</th><td> Number of nodes to search before
                      stopping.
      <tr><th>Choose Flaw</th><td> If yes, the user must select from a
                      list of current flaws. Search limit will be set to
                      1.
      <tr><th>Record Firings</th><td> Yes to record all search control
                      rule firings(slow).

   <tr><th> Print</th><td> Print the current window. Asks for filename via
                 dialog.
   <tr><th> Inspect</th><td> Inspect the current node.
<tr><td rowspan=2> Options</td>
   <th> Graphics</th><td> Change the representation of the plan
      <table border=3>
      <tr><th>Graphics</th><td> Graphical, partial-order view.
      <tr><th>Text</th><td> Textual View
      </table>
   <tr><th> Verbosity</th><td> Control detail or representation
      <table border=3>
      <tr><th>Verbose</th><td> Print out conditions and steps fully
      <tr><th>Terse</th><td> Show only steps
</table>       
</table>
<tr><th><h4>Mouse Commands</h4>
<table border=3>       
<tr><th> Plan Tree Nodes
   <table border=3>
   <tr><th> L</th><td> Select Node</th><td> Pressing the left button on a node
                 causes the window to display the plan associated with
                 that node. The navigational display is updated, as is
                 the VCR window associated with the plan window.
   <tr><th> M</th><td> Describe object</th><td> If Composer is running, a Composer
                 window will be opened on the plan associated with the
                 selected node.
   </table>
<tr><th> Plan Structures
   <table border=3>
   <tr><th> L</th><td> Choose Flaw</th><td> Pressing the left button on a flaw(shown
                 in red) will bring up a plan refinement dialog with the
                 selected flaw already chosen for refinement. Clicking
                 the left button on other structures has no effect.
   <tr><th> M</th><td> Describe object</th><td> If Composer is running, a Composer
                 window will be opened on the structure associated with
                 the highlighted graphic.
   <tr><th> Shift-L</th><td> Move Object</th><td> Pressing Shift-L over a step in
                 graphic display mode will let you drag the step to a new
                 position. This allows you to view the plan in a more
                 reasonable manner than the automatic layout provides.
   </table>
</table>   

<h4>History</h4>
On the bottom of the window is a simple history mechanism.  It records
the nodes visited and allows one to follow the path of plan exploration
<em>by the user</em> in the plan window.<p>
    <table border=3>       
    <tr><td><img src="images/vcr-button2.gif"></td>
	<td>Go to the previous visited node.</td>
    <tr><td><img src="images/vcr-button4.gif"></td>
	<td>Go to the next visited node.</td>
    </table>       

<hr>
<h2><a name="Brows">PDB browsers</a></h2><p>

<p>       
<img align=left src="images/browser.gif">
<p>      
<h3>Browser Window</h3>
The PDB browser is used to provide an organized view and uniform frontend
to inspect different objects related to planning
problems,  for example,  domains, problems,  axioms,  facts,  operators and
sessions.  <br clear=left>

<h4>Menu Commands</h4>
<table border=3>       
<tr>
<td>Windows</td><td colspan=2>Please refer to 
	<a href="#Layou">General window layout</a></td>
<tr><td> Object</td>
   <td><table border=1>
   <th> Print</th><td> Print the current window.
   <tr><th> Inspect</th><td> Inspect the current object.
   </table></td>
</table>
<h4>Browser Commands</h4>
    <table border=3>       
    <tr><td><img src="images/vcr-button2.gif"></td>
	<td>Scroll the browser menus towards the top of the heirarchy.</td>
    <tr><td><img src="images/vcr-button4.gif"></td>
	<td>Scroll the browser menus towards the bottom of the heirarchy.</td>
    </table>       

<tr><th><h4>Mouse Commands</h4>
<table border=3>
<tr><th> L</th><td> Select Object</th><td> Clicking on an item in one of the browser
            menus will bring up the menu associated with that item(if
            any) in the pane to the right of the selection, as well as
            the object associated with that item(if any).
</table>   
<p>
<hr>
<p>
<!---------------------------------------------------------------------->

<a name="Examp"><h2>A Simple Example</h2></a>

<h4>Specify a Problem</h4>

Select <tt>New Session</tt> from the <tt>Debugger</tt> menu. You will then
be able to specify the domain and problem to use. Try selecting
the <tt>uget-paid</tt> problem used in the previous section. Once you
have done this, you are ready to specify the search control options.

<h4>Set the Search Control Options</h4>

Using the <tt>New Session</tt> dialog, set the search function to 
<tt>ucpop::bf-control</tt>.
This is the same search function used for this problem in the previous example.
For purposes of this example, you do not need to set any of the other options.

<h4>View the Results of Planning</h4>

When you click on the <tt>Plan</tt> button, UCPOP will begin planning.
The Plan System Overview window will display a progress report, and 
return the results of planning when done. At this time, you will be able
to see the solution generated by the planner.

<h4>Open a VCR Window</h4>
The session you just created should be listed in the Plan System Overview Window. Select
this session with the left button and press the <tt>VCR</tt> button. This will bring up 
a VCR Window. You are now able to view the actual search tree explored by the planner.

<h4>Use the VCR Window</h4>
Experiment with the VCR Buttons, 
as well as with scrolling the tree around using the scrollbars.

<h4>Open a Plan Window</h4>
Scroll to the top left corner of the tree and select the node labeled
<tt>START</tt>.<br> If you click on this node again, a Plan Window
will appear.  In this case, you will see that the plan has only the
goal step and initial state in it.  This is the first plan created by
the planner. Now scroll down to the bottom left node (the solution),
and open a new window on it. To see just how much work went into the
<tt>uget-paid</tt> solution, go to the <tt>Options</tt> menu, from which
you can select a graphical view of the plan. This view shows each step
in the plan, with preconditions on the left and postconditions on the
right. Links are drawn as lines between the steps.  These links were
inserted into the plan one at a time, each one represented by a branch
in the tree.

<h4>Use the Plan Window</h4>
Explore the area around the <tt>START</tt> node using the Plan Window. Note how
much easier it is to see the relationships between the various nodes compared
to the VCR Window, where the whole tree is being displayed at once.
<p>
<!---------------------------------------------------------------------->
<hr>
<h2><a name="Custo">Customizations and options</a></h2><p>
<h4>Display types</h4>
Some of the defaults used by PDB are not appropriate for monochrome or
grayscale displays.  On such systems,  PDB provides a set of defaults
that are suitable. <p>
You can define <tt>(setf *pdb-use-colors* nil)</tt> in your Lisp startup file
(e.g. .clinit.cl on Allegro Common Lisp),  or anytime <em>before</em> loading
PDB.  This will cause PDB to adopt monochrome defaults for its windows.
<p>
<h4>Variables</h4>
The following are some user customizable variables.  You can customize PDB
by defining a function and setf it to *pdb-startup-hook*.  
You can define this function in your Lisp initialization file;
PDB will call this function when you run pdb-setup.  For example:
<listing>
(defun my-pdb-init-function ()
   (setf *shell-width* 900)
   (setf *plan-height* 1000))
(setf *pdb-startup-hook* #'my-pdb-init-function)
</listing>
The table below lists some of the variables that can be set:
<p>
<table border=3>
<tr><th> <th>Variable</th><th>Description</th><th>Default</th>
	 <th>Note</th></tr>
<tr><th> <th>*shell-width*<br>*shell-height*</th>
     <td>Width and height of the shell window.</td>
     <td>600<br>400</td>
     <td>It is best not to set these variables below the 
     defaults.</td>
</tr>
<tr><th> <th>*vcr-width*<br>*vcr-height*</th> 
     <td>Width and height of the VCR window. </td>
     <td>800<br>600</td>
</tr>
<tr><th> 	<th>*plan-height*<br>*plan-width*</th>
	<td> Width and height of the plan window. </td>
	<td>500<br>400</td>
</tr>
<tr><th> 	<th>*browser-height*<br>*browser-width*</th>
	<td> Width and height of the browser window.</td>
	<td> 500<br>400
</tr>
<tr><th> 	<th>*vcr-show-progress*</th>  
	<td>When drawing the VCR window,  a window indicating
drawing progress will be displayed if this variable is set to t.</td>
	<td>t
</tr>
</table>
</table>
<p>
There are other variables that customize colors and fonts as well.  Please
refer to the file "pdb/shell.lisp".

<hr>
<h2><a name="KBugs">Known bugs</a></h2><p>
Some of these problems are resulted from bugs in CLIM2.0 implementation
on AllegroCL 4.2.  When you send bug reports,  please check the list
below first.
<ul>
<li>Launching composer with many windows open could hang the X server (have 
to kill the ACL process).  Sometimes this also happen if you random click on CLIM
windows when composer windows are being mapped.
<li>Transient window/dialog boxes can sometimes disappear/abort after user
  move the window.
<li>In choose flaw dialog,  the flaw actually appears multiple times e.g.
	(clear ?x3) & (clear ?x3).  But they're both selected.  Can be
	confusing.
<li>Iconify and deiconify doesn't work in our CLIM2.0 implementation.  
As a result if you
iconify a plan window,  they cannot be brought back automatically by clicking
on the node as intended.
<li>When exiting a VCR window,  all its children plan windows should be 
exiting too.  However this behavior cannot be achieved by the CLIM2.0
implementation on our system.
<li>The shell window does not resize correctly vertically because of CLIM2.0
gadget limitations.
<li>Plan nodes will not be highlighted (boxed) if Num Lock or Scroll Lock key is on.
<li>Synchronization problem: asking PDB to display output before the window shows up will
fail.
<li>This is likely a CLIM bug.  When the shell window refreshes the first time,  pressing random
buttons will cause a "medium-transformation" error.  Just continue with the top-level option in
ACL.
<li>Help documents are slightly outdated and not very helpful.
</ul>
<p>
If PDB should ever crash,  you can either continue by choosing one
of the several continue options provided by your lisp system,  or 
restart PDB.  You can simply restart by issuing <tt>(pdb-setup)</tt> again.
Restarting will erase all previous sessions.  Please also include a stack trace
(for example using :zoom in Allegro CL) and send a message to 
bug-ucpop@cs.washington.edu.
<p>
<hr>
<h2><a name="Portg">Porting PDB</a></h2></p>
PDB is written with flexibility in mind,  and could be adopted to other partial order planners that
is similar to UCPOP.  PDB has already been ported to a descendent of UCPOP,  XII.  Work is 
under way to port PDB to other partial order planners such as Buridan.
<p>
If the planner is very similar to UCPOP,  only functions specific to the planner need to be
redefined.  The file vcr-external.lisp contains the interface functions called by PDB to 
display plan components.  You just need to redefine these functions for your planner.
To change the PDB- Lisp-interpreter interface  for your planner,  modify the file 
vcr-interface.lisp.
<p>

<hr>
</body>
</html>
